package cn.edu.sdjzu.knoverse.service.impl;

import cn.edu.sdjzu.knoverse.model.entity.kg.FileNode;
import cn.edu.sdjzu.knoverse.repository.FileNodeRepository;
import cn.edu.sdjzu.knoverse.service.FileNodeService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.ArrayList;
import java.util.List;

@Service
@RequiredArgsConstructor
public class FileNodeServiceImpl implements FileNodeService {
    
    private final FileNodeRepository fileNodeRepository;
    
    /**
     * 保存文件节点到图数据库
     * @param fileId 文件ID
     * @return 保存的FileNode对象
     */
    @Override
    @Transactional
    public FileNode saveFileNode(Long fileId) {
        FileNode fileNode = new FileNode();
        fileNode.setFileId(fileId);
        return fileNodeRepository.save(fileNode);
    }
    
    /**
     * 批量保存文件节点到图数据库
     * @param fileIds 文件ID列表
     * @return 保存的FileNode对象列表
     */
    @Override
    @Transactional
    public List<FileNode> batchSaveFileNodes(List<Long> fileIds) {
        List<FileNode> fileNodes = new ArrayList<>();
        for (Long fileId : fileIds) {
            FileNode fileNode = new FileNode();
            fileNode.setFileId(fileId);
            fileNodes.add(fileNode);
        }
        return (List<FileNode>) fileNodeRepository.saveAll(fileNodes);
    }
    
    /**
     * 从图数据库中删除文件节点
     * @param fileId 文件ID
     */
    @Override
    @Transactional
    public void deleteFileNode(Long fileId) {
        fileNodeRepository.deleteById(fileId);
    }
    
    /**
     * 批量从图数据库中删除文件节点
     * @param fileIds 文件ID列表
     */
    @Override
    @Transactional
    public void batchDeleteFileNodes(List<Long> fileIds) {
        fileNodeRepository.deleteAllById(fileIds);
    }
} 